#include"comm.hpp"


int main(){
    Init init;//命名管道，控制实现共享内存同步
    int shmid=CreateShm();
    char *shmaddr=(char*)shmat(shmid,nullptr,0);

    int fd=open(FIFO_FILE, O_RDONLY);//等待processb（写人方）打开管道
    if(fd<0){
        log(Fatal,"error string: %s, error code: %d",strerror(errno),errno);
        exit(FIFO_OPEN_ERR);
    }
    struct shmid_ds shmds;
    while (true)
    {
        char c;
        ssize_t s=read(fd,&c,1);//管道没有发送就会阻塞
        if(s==0) break;
        else if(s<0) break;

        cout<<"client say@ "<<shmaddr<<endl;
        sleep(1);
        
        shmctl(shmid,IPC_STAT,&shmds);
        cout<<"shm size: "<<shmds.shm_segsz<<endl;
        cout<<"shm nattch: "<<shmds.shm_nattch<<endl;
        printf("shm key: 0x%x\n",shmds.shm_perm.__key);
        cout<<"shm mode: "<<shmds.shm_perm.mode<<endl;
    }
    
    shmdt(shmaddr);
    shmctl(shmid,IPC_RMID,nullptr);
    
    close(fd);
    return 0;
}